import java.util.Date;

public class PatientFactory {
	private static int id;
	private static boolean admit;
	
	public static PatientBase create(PatientType type) {
		PatientBase patient;
		
		switch(type) {
			case AbdominalPain:
				return new AbdominalPainPatient(id++, 3, new Date(), type, admit);
			case AbnormalBloodPressure:
				return new AbnormalBloodPressurePatient(id++, 3, new Date(), type, admit);
			case AbnormalBloodSugar:
				return new AbnormalBloodSugarPatient(id++, 3, new Date(), type, admit);
			case AcuteSTEMI:
				return new AcuteSTEMIPatient(id++, 3, new Date(), type, admit);
			case AlteredMentalStatus:
				return new AlteredMentalStatusPatient(id++, 3, new Date(), type, admit);
			case AtypicalChestPain:
				return new AtypicalChestPainPatient(id++, 3, new Date(), type, admit);
			case DyspneaAsthma:
				return new DyspneaAsthmaPatient(id++, 3, new Date(), type, admit);
			case DyspneaCHF:
				return new DyspneaCHFPatient(id++, 3, new Date(), type, admit);
			case DyspneaCOPD:
				return new DyspneaCOPDPatient(id++, 3, new Date(), type, admit);
			case DysuriaDischarge:
				return new DysuriaDischargePatient(id++, 3, new Date(), type, admit);
			case ExtremityInjury:
				return new ExtremityInjuryPatient(id++, 3, new Date(), type, admit);
			case EyeInjury:
				return new EyeInjuryPatient(id++, 3, new Date(), type, admit);
			case Fatigue:
				return new FatiguePatient(id++, 3, new Date(), type, admit);
			case Fever:
				return new FeverPatient(id++, 3, new Date(), type, admit);
			case BackPain:
				return new BackPainPatient(id++, 3, new Date(), type, admit);
			case GIBleeding:
				return new GIBleedingPatient(id++, 3, new Date(), type, admit);
			case Headache:
				return new HeadachePatient(id++, 3, new Date(), type, admit);
			case Hip:
				return new HipPatient(id++, 3, new Date(), type, admit);
			case IngestedHarmfulSubstance:
				return new IngestedHarmfulSubstancePatient(id++, 3, new Date(), type, admit);
			case JointPain:
				return new JointPainPatient(id++, 3, new Date(), type, admit);
			case KneeAnkleFootInjury:
				return new KneeAnkleFootInjuryPatient(id++, 3, new Date(), type, admit);
			case MajorTrauma:
				return new MajorTraumaPatient(id++, 3, new Date(), type, admit);
			case MinorHeadInjury:
				return new MinorHeadInjuryPatient(id++, 3, new Date(), type, admit);
			case NauseaVomitingDiarrhea:
				return new NauseaVomitingDiarrheaPatient(id++, 3, new Date(), type, admit);
			case Palpitations:
				return new PalpitationsPatient(id++, 3, new Date(), type, admit);
			case Pneumonia:
				return new PneumoniaPatient(id++, 3, new Date(), type, admit);
			case PleuriticChestPain:
				return new PleuriticChestPainPatient(id++, 3, new Date(), type, admit);
			case SevereSepsis:
				return new SevereSepsisPatient(id++, 3, new Date(), type, admit);
			case PostOperativeFever:
				return new PostOperativeFeverPatient(id++, 3, new Date(), type, admit);
			case RODVT:
				return new RODVTPatient(id++, 3, new Date(), type, admit);
			case ScrotalPain:
				return new ScrotalPainPatient(id++, 3, new Date(), type, admit);
			case Seizure:
				return new SeizurePatient(id++, 3, new Date(), type, admit);
			case SkinReaction:
				return new SkinReactionPatient(id++, 3, new Date(), type, admit);
			case Stroke:
				return new StrokePatient(id++, 3, new Date(), type, admit);
			case Syncope:
				return new SyncopePatient(id++, 3, new Date(), type, admit);
			case ThroatDentalAilment:
				return new ThroatDentalAilmentPatient(id++, 3, new Date(), type, admit);
		}
		
		return new PatientBase(id++, 1, null, type, admit);
	}
}
